using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;

namespace Narwhunderful.Aphelia.Framework.Input.Keyboard
{

    public class KeyEventArgs : EventArgs
    {

        Keys _keys = Keys.None;
        public Keys Keys
        {
            get
            {
                return _keys;
            }
            protected internal set
            {
                _keys = value;
            }
        }

        KeyboardState _currentState;
        public KeyboardState CurrentState
        {
            get
            {
                return _currentState;
            }
            protected internal set
            {
                _currentState = value;
            }
        }

        KeyboardState _lastState;
        public KeyboardState LastState
        {
            get
            {
                return _lastState;
            }
            protected internal set
            {
                _currentState = value;
            }
        }

        bool _capsLock = false;
        public bool CapsLock
        {
            get
            {
                return _capsLock;
            }
            protected internal set
            {
                _capsLock = value;
            }
        }

        bool _alt = false;
        public bool Alt
        {
            get
            {
                return _alt;
            }
            protected internal set
            {
                _alt = value;
            }
        }

        bool _shift = false;
        public bool Shift
        {
            get
            {
                return _shift;
            }
            protected internal set
            {
                _shift = value;
            }
        }

        bool _control = false;
        public bool Control
        {
            get
            {
                return _control;
            }
            protected internal set
            {
                _control = value;
            }
        }

        public KeyEventArgs(Keys keys, KeyboardState currentState, KeyboardState lastState)
        {
            _keys = keys;
            _currentState = currentState;
            _lastState = lastState;
        }

    }

}
